//--------------------------------------------------------------------------------
// This file is part of the Windows Workflow Foundation Sample Code
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// This source code is intended only as a supplement to Microsoft
// Development Tools and/or on-line documentation.  See these other
// materials for detailed information regarding Microsoft code samples.
// 
// THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//--------------------------------------------------------------------------------

using System;
using System.Collections.ObjectModel;

namespace Microsoft.Samples.Workflow.UI 
{
    class GetHistoryCommand
    {
        ReadOnlyCollection<Bookmark> history = null;

        public GetHistoryCommand() { }

        public ReadOnlyCollection<Bookmark> History
        {
            get { return this.history; }
            set { this.history = value; }
        }
    }

    class GetContextCommand
    {
        Bookmark bookmark = null;
        InteractionContext context = null;

        public GetContextCommand() { }

        public GetContextCommand(Bookmark bookmark) 
        {
            this.bookmark = bookmark;
        }

        public Bookmark Bookmark
        {
            get { return this.bookmark; }
        }

        public InteractionContext Context
        {
            get { return this.context; }
            set { this.context = value; }
        }
    }

    abstract class InteractionCommand
    {
        InteractionContext context = null;

        public InteractionCommand() { }

        public InteractionContext NextInteraction
        {
            get { return this.context; }
            set { this.context = value; }
        }
    }

    class ForwardCommand : InteractionCommand
    {
        UserInput input = null;

        public ForwardCommand(UserInput input)
            : base()
        {
            this.input = input;
        }

        public UserInput Input
        {
            get { return this.input; }
        }
    }

    class SynchronizeCommand : InteractionCommand
    {
        Bookmark bookmark = null;

        public SynchronizeCommand(Bookmark bookmark)
            : base()
        {
            this.bookmark = bookmark;
        }

        public Bookmark Bookmark
        {
            get { return this.bookmark; }
        }
    }
}